package com.github.common.extend.demo.config.transaction.distributed.message;

import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;
import java.time.LocalDateTime;

/**
 * 消息数据，不依赖特定消息中间件
 * @author X1993
 * @date 2022/9/22
 * @description
 */
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class XMessage {

    /**
     * 未发送
     */
    public final static int UNSENT = 0;

    /**
     * 发送成功
     */
    public final static int SUCCESS = 1;

    /**
     * 发送失败,可重试
     */
    public final static int FAIL_RETRY = 2;

    /**
     * 发送失败,不可重试
     */
    public final static int FAIL = 3;

    /**
     * 消息唯一id
     */
    Long id;

    /**
     * 创建时间
     */
    LocalDateTime createTime;

    /**
     * 消息体
     */
    String content;

    /**
     * 消息备注
     */
    String remark;

    /**
     * 发送状态
     */
    Integer status;

    /**
     * 发送次数
     */
    int sendCount;

    /**
     * 是否是最终状态
     * @return
     */
    public boolean isFinal(){
        return status == FAIL || status == SUCCESS;
    }

}
